package com.example.joblinker.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 职位收藏实体类
 * 注意：由于数据库表使用复合主键(userId, jobId)，而MyBatis-Plus需要单一主键，
 * 这里添加一个虚拟id字段作为主键占位，但数据库中不存在此字段。
 */
@Data
@TableName("job_favorites")
public class JobFavorite implements Serializable {

    private static final long serialVersionUID = 1L;
    
    /**
     * 虚拟主键ID (不在数据库中存在)
     */
    @TableId
    @TableField(exist = false)
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 职位ID
     */
    private Long jobId;

    /**
     * 收藏时间
     */
    private LocalDateTime createTime;
    
    /**
     * 获取虚拟ID
     */
    public Long getId() {
        if (userId != null && jobId != null) {
            // 通过userId和jobId计算出一个唯一的虚拟ID
            return (userId << 32) | (jobId & 0xFFFFFFFFL);
        }
        return null;
    }
    
    /**
     * 设置虚拟ID (实际不做任何操作)
     */
    public void setId(Long id) {
        // 这个方法实际不做任何事情，因为id是通过userId和jobId计算出来的
        this.id = id;
    }
} 